/*
*
* 提示用户输入年月日信息，判断这一天是这一年中的第几天并打印。
*
* */

import java.util.Scanner;
public class Test1 {

   public static void main(String[] args){
       //new 一个捕获输入的scanner对象
       Scanner  scanner = new Scanner(System.in);



       //一般的年月日 格式如：2015年5月5日 需先判断年份  然后判断月份 最后把前面的月份加上日就得到第几天了
       //因为还没学习String 常用工具类，所以年月日得一一输入


       System.out.println("请输入年份如（1995）：");
       int year =  scanner.nextInt();
       System.out.println("请输入月份如（8）：");
       int month =  scanner.nextInt();
       System.out.println("请输入日如（15）：");
       int day =  scanner.nextInt();
        //如果能被4整除并且不能被100整除为闰年  如果能被400整除也为闰年
       int monthDays = 0;
       if((year%4==0 && year%100!=0) || year%400==0){
           monthDays =  getDays(month,true);
       } else {
           monthDays =   getDays(month,false);
       }
        //将月份对应已经度过的天数加上输入的天数，得到正确的天数
       System.out.println("这一天是这一年的第 " + (monthDays + day) + " 天");

   }
   //传入月份，得到此月之前的总天数，如是闰年则2月为29  1 3 5 7 8 10 12  月为31天  4 6 9 11 为30天
   private  static int getDays(int month ,boolean isLeap){
        int lastMonth = 12 - month; //剩余月份
       int allDays = 365;
       if (isLeap){
           allDays = 366;
       }
       //按照剩余月份，返回此月之前的天数
       switch (lastMonth) {

           case 1:
                return allDays -30 -31;

           case 2:
               return allDays - 31*2 -30;
           case 3:
               return allDays - 31*2 -30 * 2;
           case 4:
               return allDays - 31*3 -30 * 2;
           case 5:
               return allDays - 31*3 -30*3;
           case 6:
               return allDays - 31*4 -30*3;
           case 7:
               return allDays - 31*5 -30*3;
           case 8:
               return allDays - 31*5 -30*4;
           case 9:
               return allDays - 31* 6 -30 *4;
               //如果为2月贼判断闰年
           case 10:
               int days = 28;
               if (isLeap){
                   days = 29;
               }
               return allDays - 31*6 -30*4 -days;
               //如果为1月，则直接返回0
           case 11:
               return 0;
           case 0:
              return allDays - 31;
       }
       return 0;
   }

}
